import {
    createRouter,
    createWebHistory
} from "vue-router"
import NProgress from 'nprogress'
import managerRoute, {MANAGER_ROOT_ROUTE_NAME} from '@/router/routes/manager.js'
import loginRoute, {LOGIN_ROOT_ROUTE_NAME} from '@/router/routes/login.js'
import {MANAGER_ID_LOCALSTORAGE_KEY} from "@/constants/manager.js";

// 默认路由名
export const ROOT_ROUTE_NAME = 'root'

/**
 * 创建并配置 vue-router 实例对象
 *
 * @type {Router} vue-router 实例对象
 */
const router = createRouter({
    // 页面历史模式采用 html5 历史模式（网页 url 中不带 #）
    history: createWebHistory(),
    // 配置页面路由
    routes: [
        // 重定向到根路由
        {
            path: '',
            redirect: {name: ROOT_ROUTE_NAME}
        },
        // 根路由
        {
            name: ROOT_ROUTE_NAME,
            path: '/xwb/main',
            children: [
                // 首页
                // 登录
                loginRoute,
                // 管理
                managerRoute,
                // ...
            ]
        },
    ]
})

/**
 * 需要进行登录路由
 */
const needLoginRoutes = [MANAGER_ROOT_ROUTE_NAME]

/**
 * 全局前置守卫
 */
router.beforeEach((to, from, next) => {
    // 开始加载条
    NProgress.start()
    // 访问的路由需要登录
    if (needLoginRoutes.includes(to.name)) {
        // 从 localstorage 中获取 managerId
        const managerId = localStorage.getItem(MANAGER_ID_LOCALSTORAGE_KEY)
        // 未登录过
        if (managerId === null || managerId === undefined || managerId.length <= 0) {
            next({name: LOGIN_ROOT_ROUTE_NAME})
        }
    }
    next()
})

/**
 * 全局后置守卫
 */
router.afterEach((to, from) => {
    // 结束加载条
    NProgress.done()
});

/**
 * 默认导出 vue-router 实例对象
 */
export default router